package com.dqyt.khjc.swicth;


import com.dqyt.khjc.bean.SwitchBean;
import com.dqyt.khjc.mapper.SwitchMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.List;

@Component
public class SwitchConfig {


    @Autowired
    private SwitchMapper mSwitchMapper;

    private static HashMap<Long, SwitchBean> datas = new HashMap<>();

    /**
     * 允许使用短信验证码登录：
     */
    public final static Long ID_DX = 1l;
    /**
     * 用户所有报告审核完成后，发送检验完毕短信给联系人
     */
    public final static Long ID_WCTZ = 2l;
    /**
     * 用户送检后，间隔360天发送提示短信，提示送检
     */
    public final static Long ID_TSSJ = 3l;
    /**
     * 允许客户自由注册成为用户（需审批)
     */
    public final static Long ID_ZC = 4l;
    /**
     * 启用登录ip追踪：
     */
    public final static Long ID_IPZZ = 5l;
    /**
     * 启用操作日志记录：：
     */
    public final static Long ID_CZRZ = 6l;
    /**
     * 启用系统自动分配任务：：
     */
    public final static Long ID_FPRW = 7l;

    /**
     * 这个注解的方法开机执行
     */
    @PostConstruct
    public void init() {
        // 从数据库中取得数据
        System.out.println("==================我是开机自动执行!====================");
        List<SwitchBean> lists =  mSwitchMapper.getSwitchList(); // 取得所有的开关选项
        for(SwitchBean switchBean:lists) {
            datas.put(Long.valueOf(switchBean.getId()), switchBean); // 保存数据到内存
        }
    }

    /**
     * 根据类型获取是否打开了开关
     */
    public static boolean isOpen(Long key) {
        SwitchBean switchBean = datas.get(key);
        if (null != switchBean && switchBean.getSwState() == 1) {
            return true;
        }
        return false;
    }

    /**
     * 设置开关是否打开
     */
    public static void isOpen(Long key, boolean ret) {
        SwitchBean switchBean = datas.get(key);
        if (null != switchBean) {
            if(ret) {
                switchBean.setSwState(1); // 设置
            } else{
                switchBean.setSwState(0); // 设置
            }
            datas.put(key, switchBean); // 保存到内存
        }
    }



    /**
     * 重新设置所有数据
     */
    public static void setDatas(List<SwitchBean> lists) {
        datas.clear(); // 清除旧的数据
        for(SwitchBean switchBean:lists) {
            datas.put(Long.valueOf(switchBean.getId()), switchBean); // 保存数据到内存
        }
    }

}
